10 ; 20 ; 30 ; +------------------------------------------------+ 40 ; ! ! 50 ; ! ! 60 ; ! ****** COMMODORE 64 COMAL-80 ****** ! 70 ; ! ! 80 ; ! (C) COPYRIGHT UNICOMAL APS 1983, 1984 ! 90 ; ! ! 100 ; ! ! 110 ; ! C64SYMB FOR COMMODORE 64 COMAL-80 REV. 2.01 ! 120 ; ! ! 130 ; ! ! 140 ; +------------------------------------------------+ 150 ; 160 ; 170 ; 180 TRUE =1 190 FALSE =0 200 ; 210 PAGE0 =%11100000 ;NO EXPANSION 220 PAGE1 =%10000000 ;CARTRIDGE OVERLAY 1 ($8000-$BFFF) 230 PAGE2 =%10000001 ;CARTRIDGE OVERLAY 2 ($8000-$BFFF) 240 PAGE3 =%10000010 ;CARTRIDGE OVERLAY 3 ($8000-$BFFF) 250 PAGE4 =%10000011 ;CARTRIDGE OVERLAY 4 ($8000-$BFFF) 260 PAGE5 =%10000100 ;CARTRIDGE OVERLAY 5 ($8000-$BFFF) 270 PAGE6 =%10000101 ;CARTRIDGE OVERLAY 6 ($8000-$BFFF) 280 ; 290 PAGEA =PAGE2 ;COMAL PAGE A 300 PAGEB =PAGE3 ;COMAL PAGE B 310 PAGEC =PAGE1 ;COMAL PAGE C 320 ; 330 ; 340 ; 350 ; PAGE ZERO VARIABLES: 360 ; ==================== 370 ; 380 *=$0000 390 ; 400 D6510 *=*+1 ;6510 ON-CHIP DATA-DIRECTION REGISTER 410 R6510 *=*+1 ;6510 ON-CHIP 6-BIT I/O/MAP-REGISTER: 420 LORAM =%00000001 ; CONTROL FOR RAM/ROM AT $A000-$BFFF (BASIC) 430 HIRAM =%00000010 ; CONTROL FOR RAM/ROM AT $E000-$FFFF (KERNAL) 440 CHAREN =%00000100 ; CONTROL FOR I/O/ROM AT $D000-$DFFF 450 NORM =%00110111 ; COMAL MEMORY MAP 460 ; 470 PRPROC *=*+3 ;CHAIN OF LOCAL NAMES (PREPASS) 480 INTEGR *=*+1 ;FP WORK 490 ; 500 ; MEMORY MAP CONTROL 510 ; 520 PAGE *=*+1 ;CURRENT MEMORY MAP 530 CM8096 =PAGE 540 MEMMAP =PAGE 550 PAGEPT *=*+2 ;POINTER USED BY LOAD/STORE/EXEC 560 PAGEX *=*+1 ;OVERLAY FOR LOAD/STORE/EXEC ROUTINES 570 PAGEY *=*+1 ;OVERLAY USED FOR CONTROL OF JUMP TABLE 580 P6510 *=*+1 ;OLD C64-OVERLAY FOR CONTROL OF JUMP TABLE 590 RESOL *=*+1 ;GRAPHICS RESOLUTION 600 GCOLH *=*+1 ;GRAPHICS PENCOLOR*16 610 ; 620 ; COMAL VARIABLES 630 ; 640 LOCLPT *=*+2 ;CHAIN OF OLD VARIABLE DESCRIPTIONS 650 FORPT *=*+2 ;STACK ENTRY CHAIN 660 SCTYPE *=*+1 ;TYPE OF SYMBOL FROM SCANNER 670 TANSGN *=*+1 ;TAN SIGN / COMPARISON EVALUATION FLAG 680 CODE *=*+1 ;USED TO HOLD A GENERATED CODE 690 CPNT *=*+1 ;POINTER TO CODE BUFFER, CDBUF 700 CLIMIT =255 ;LIMIT OF CPNT 710 SPROG *=*+2 ;PNT TO START OF PROGRAM 720 SVARS *=*+2 ;PNT TO START OF VARIABLE TABLE 730 SSTACK *=*+2 ;PNT TO START OF STACK 740 SMAX *=*+2 ;PNT TO TOP OF MEMORY 750 EXINF *=*+1 ;INF FOR RESULT EXPRESSION FROM EXPR 760 SCERR =$01 770 SCLNO =$08 ;SET, IF NUMBER CAN BE A LINE NUMBER 780 LNLEN *=*+1 ;LENGTH OF LINE TO BE EXECUTED 790 NPNT *=*+1 ;POINTER TO NAME 800 TPNT *=*+1 ;POINTER TO STRING 810 TLIMIT =80 820 ; 830 INDEX1 *=*+2 ;UTILITY POINTER 840 INDEX2 *=*+2 ;UTILITY POINTER 850 INDEX =INDEX1 860 ; 870 RESM1 *=*+1 ;PRODUCT AREA FOR MULTIPLICATION 880 RESM2 *=*+1 890 RESM3 *=*+1 900 RESM4 *=*+1 910 RESM5 *=*+1 920 ; 930 MULT1 =RESM1 ;FIRST OPERAND (MULT) 940 MULT2 =RESM3 ;SECOND OPERAND (MULT) 950 ; 960 DATAPT *=*+2 ;CURRENT DATA POINTER 970 STOS *=*+2 ;PNT TO TOP OF STACK 980 SFREE *=*+2 ;PNT TO FREE AREA OF VAR.RES 990 PRGPNT *=*+2 ;PNT TO START OF LINE 1000 CODPNT *=*+1 ;PNT TO CODE DURING EXECUTION 1010 SCLSD1 *=*+2 ;OLD SFREE (CLOSED) 1020 SCLSD2 *=*+2 ;OLD STOS (CLOSED) 1030 INF1 *=*+1 1040 INF2 *=*+1 ;USED FOR OPERAND CHECKING 1050 INF3 *=*+1 1060 Q1 *=*+2 ;SHORT SPAN WORK AREAS 1070 Q2 *=*+2 1080 Q3 *=*+2 1090 Q4 *=*+2 1100 Q5 *=*+2 1110 COPY1 *=*+2 ;WORK FOR COPY FROM 1120 COPY2 *=*+2 ; TO 1130 FDECPT =COPY2 ;CURRENT VARIABLE ADDRESS (DEC POINTER) 1140 COPY3 *=*+2 ; LENGTH 1150 BUS *=*+1 ;BUS=0 BUS IDLE; BUS<>0 BUS ACTIVE 1160 STINF *=*+1 ;INFORMATION FOR STATEMENT 1170 CMND =$01 ; NO LINE NUMBER 1180 TWOST =$02 ; ANOTHER STATEMENT FOLLOWS 1190 WHLDO =$04 ; AFTER WHILE ... DO 1200 FORDO =$08 ; AFTER FOR ... DO 1210 COMMNT =$10 ; STATEMENT ENDED BY COMMENT 1220 IFTHEN =$20 ; AFTER IF ... THEN 1230 REPUNT =$40 ; AFTER REPEAT ... UNTIL 1240 ; 1250 EXCINF *=*+1 ;EXECUTION INFORMATION: 1260 ESCTRP =$02 ; ESCAPE IS TRAPPED (STOP) 1270 SRQ =$04 ; MAKE CALL OF COMAL INTERRUPT HANDLER. 1280 ESCMET =$08 ; ESCAPE MET (STOP) 1290 SRQON =$10 ; SRQ ENABLED 1300 USRQON =$20 ; USER REQUEST ENABLED 1310 SFTSRQ =$80 ; SOFTWARE SRQ ONLY 1320 ; 1330 ; VARIABLES FOR FLOATING POINT PACKAGES 1340 ; 1350 TEMPF3 *=*+6 ;MISC. FP WORK AREA 1360 ESCAPE *=*+1 ;STOP KEY FLAG 1370 *=*+1 ;NOT USED 1380 OLDOV *=*+1 ;OLD OVERFLOW (ROUNDING) 1390 TEMPF1 *=*+5 ;MISC. FP WORK AREA (5 BYTES) 1400 TEMPF2 *=*+5 ;MISC. FP WORK AREA (5 BYTES) 1410 DECCNT =TEMPF2+1 1420 TENEXP =TEMPF2+2 1430 ; 1440 AC1 *=*+6 ;ACCUM#1: 1450 AC1E =AC1+0 ; EXPONENT 1460 AC1M1 =AC1+1 ; MANTISSA 1 1470 AC1M2 =AC1+2 ; MANTISSA 2 1480 AC1M3 =AC1+3 ; MANTISSA 3 1490 AC1M4 =AC1+4 ; MANTISSA 4 1500 AC1S =AC1+5 ; SIGN 1510 ; 1520 DEGREE *=*+1 ;SERIES EVALUATION CONSTANT POINTER 1530 BITS *=*+1 ;ACCUM#1 HI-ORDER (OVERFLOW) 1540 ; 1550 AC2 *=*+6 ;ACCUM#2 1560 AC2E =AC2+0 ; EXPONENT 1570 AC2M1 =AC2+1 ; MANTISSA 1 1580 AC2M2 =AC2+2 ; MANTISSA 2 1590 AC2M3 =AC2+3 ; MANTISSA 3 1600 AC2M4 =AC2+4 ; MANTISSA 4 1610 AC2S =AC2+5 ; SIGN 1620 ; 1630 ARISGN *=*+1 ;SIGN COMPARISON, ACC#1 VS ACC#2 1640 FACOV *=*+1 ;ACCUM#1 LO-ORDER (ROUNDING) 1650 POLYPT *=*+2 ;POINTER TO POLYNOM. 1660 FBUFPT =POLYPT 1670 ; 1680 ; MORE COMAL VARIABLES 1690 ; 1700 ASAVE *=*+1 ;SAVE FOR .A (CALL/GOTO) 1710 XSAVE *=*+1 ;SAVE FOR .X (CALL/GOTO) 1720 PSAVE *=*+1 ;SAVE FOR .P (CALL/GOTO) 1730 INDPNT *=*+1 ;POINTER TO LAST CODE WHERE AN ADDRESS WAS LOADED 1740 SCFLAG *=*+1 ;FLAGS IN SCANNER: 1750 LNNO *=*+2 ;LINE NUMBER 1760 MOVEAD *=*+2 ;ADDRESS FOR MOVE 1770 TXTLO *=*+1 ;ADDRESS OF TEXT FOR PRTXT 1780 TXTHI *=*+1 1790 XX *=*+2 ;CURRENT X (GRAPHICS) 1800 YY *=*+2 ;CURRENT Y (GRAPHICS) 1810 GRWK1 *=*+2 1820 GRWK2 *=*+2 1830 GRWK3 *=*+2 1840 EXCFLG *=*+1 ;FLAGS: 1850 NWNAME =$01 ; NEW NAME HAS BEEN INSERTED 1860 NWLINE =$02 ; NEW LINE HAS BEEN INSERTED 1870 CHARPT *=*+1 ; PNT TO INBUF 1880 CHAR *=*+1 ; CHAR FROM INCHAR 1890 RNDX *=*+5 ; RANDOM NUMBER SEED 1900 ; 1910 ; VARIABLES FOR I/O 1920 ; 1930 STATUS *=*+1 ;I/O OPERATION STATUS 1940 STKEY *=*+1 ;STOP KEY FLAG 1950 SVXT *=*+1 ;TEMPORARY 1960 VERCK *=*+1 ;LOAD OR VERIFY FLAG 1970 C3P0 *=*+1 ;IEEE BUFFERED CHAR FLAG 1980 BSOUR *=*+1 ;CHAR BUFFER FOR IEEE 1990 SYNO *=*+1 ;CASSETTE SYNC # 2000 XSAV *=*+1 ;TEMP FOR BASIN 2010 LDTND *=*+1 ;HOW MANY FILES OPEN 2020 DFLTN *=*+1 ;DEFAULT INPUT DEVICE # 2030 DFLTO *=*+1 ;DEFAULT OUTPUT DEVICE # 2040 PRTY *=*+1 ;CASSETTE PARITY 2050 T3 =PRTY 2060 DPSW *=*+1 ;CASSETTE DIPOLE SWITCH 2070 MSGFLG *=*+1 ;OS MESSAGE FLAG 2080 PTR1 *=*+1 ;CASSETTE ERROR PASS 1 2090 T1 =PTR1 ;TEMPORARY 1 2100 PTR2 *=*+1 ;CASSETTE ERROR PASS 2 2110 TMPC =PTR2 2120 T2 =PTR2 ;TEMPORARY 2 2130 TIME *=*+3 ;24 HOUR CLOCK IN 1/60 SEC. 2140 R2D2 =* ;SERIAL BUS USAGE 2150 PCNTR *=*+1 ;CASSETTE STUFF 2160 BSOUR1 =* ;TEMP USED BY SERIAL ROUTINE 2170 FIRT *=*+1 2180 COUNT =* ;TEMP USED BY SERIAL ROUTINE 2190 CNTDN *=*+1 ;CASSETTE SYNC COUNTDOWN 2200 BUFPT *=*+1 ;TAPE BUFFER POINTER 2210 SHCNL =* ;CASSETTE SHORT COUNT 2220 INBIT *=*+1 ;RS232 RCVR INPUT BIT STORAGE 2230 RER =* ;CASSETTE READ ERROR 2240 BITCI *=*+1 ;RS232 RCVR BIT COUNT IN 2250 REZ =* ;CASSETTE READING ZEROES 2260 RINONE *=*+1 ;RS232 RCVR FLAG FOR START BIT CHECK 2270 RDFLG =* ;CASSETTE READ MODE 2280 RIDATA *=*+1 ;RS232 RCVR BYTE BUFFER 2290 RIPRTY *=*+1 ;RS232 RCVR PARITY STORAGE 2300 SHCNH =RIPRTY ;CASSETTE SHORT COUNT 2310 SAL *=*+1 ;POINTER TAPE BUFFER/SCREEN SCROLLING 2320 SAH *=*+1 2330 EAL *=*+1 2340 EAH *=*+1 2350 CMP0 *=*+1 ;TAPE TIMING CONSTANT 2360 TEMP *=*+1 ;TAPE TIMING CONSTANT 2370 TAPE1 *=*+2 ;START OF TAPE BUFFER 2380 ; 2390 SNSW1 =* ;CASSETTE STUFF 2400 BITTS *=*+1 ;RS232 TRNS BIT COUNT 2410 NXTBIT *=*+1 ;RS232 TRNS NEXT BIT TO BE SENT 2420 DIFF =NXTBIT ;EOT RECEIVED FROM TAPE 2430 PRP =* 2440 RODATA *=*+1 ;RS232 TRNS BYTE BUFFER 2450 FNLEN *=*+1 ;LENGTH OF CURRENT FILE NAME 2460 LA *=*+1 ;CURRENT FILE LOGICAL ADDRESS 2470 SA *=*+1 ;CURRENT FILE SECONDARY ADDRESS 2480 FA *=*+1 ;CURRENT FILE PRIMARY ADDRESS 2490 FILADR *=*+2 ;CURRENT FILE NAME ADDRESS 2500 OCHAR =* 2510 ROPRTY *=*+1 ;RS232 TRNS PARITY BUFFER 2520 FSBLK *=*+1 ;CASSETTE READ BLOCK COUNT 2530 MYCH *=*+1 ;SERIAL WORD BUFFER 2540 CAS1 *=*+1 ;CASSETTE MANUAL/CONTROLLED SWITCH 2550 STAL *=*+1 ;TAPE START ADDRESS 2560 STAH *=*+1 2570 TMP2 =* 2580 MEMUSS *=*+2 ;TAPE LOAD TEMPS 2590 ; 2600 ; VARIABLES FOR SCREEN EDITOR 2610 ; 2620 LSTX *=*+1 ;KEY SCAN INDEX 2630 NEWKEY =LSTX 2640 NDX *=*+1 ;KEY BUFFER POINTER 2650 RVS *=*+1 ;REVERSE FIELD ON FLAG 2660 INDX *=*+1 ;BYTE POINTER TO END OF LINE FOR INPUT 2670 LSXP *=*+1 ;START OF SCREEN INPUT (ROW) 2680 LSTP *=*+1 ;START OF SCREEN INPUT (COLUMN) 2690 SFDX *=*+1 ;SHIFT MODE ON PRINT 2700 BLNSW *=*+1 ;CURSOR BLINK ENABLE 2710 BLNCT *=*+1 ;COUNTER TO FLIP CURSOR 2720 GDBLN *=*+1 ;OLD CHAR BEFORE BLINK 2730 BLNON *=*+1 ;ON/OFF BLINK FLAG 2740 CRSW *=*+1 ;INPUT/GET FLAG 2750 PNT *=*+2 ;POINTER TO START OF LINE WHERE 2760 CURLIN =PNT ;CURSOR IS FLASHING. 2770 PNTR *=*+1 ;COLUMN POSITION WHERE CURSOR 2780 COLPOS =PNTR ;IS FLASHING. 2790 QTSW *=*+1 ;FLAG FOR QUOTE MODE 2800 QUOTE =QTSW 2810 LNMX *=*+1 ;CURRENT SCREEN LINE LENGTH (39/79) 2820 TBLX *=*+1 ;LINE NUMBER WHERE CURSOR IS FLASHING 2830 ROWPOS =TBLX 2840 DATA *=*+1 ;TEMP DATA AREA 2850 INSRT *=*+1 ;NUMBER OF INSERT KEYS PUSHED TO (null) 2860 WRPTB *=*+26 ;LINE FLAGS+ENDSPACE 2870 LDTB1 =WRPTB 2880 USER *=*+2 ;SCREEN EDITOR COLOR POINTER 2890 KEYTAB *=*+2 ;KEYBOARD DECODE TABLE 2900 ; 2910 RIBUF *=*+2 ;RS232 INPUT BUFFER ADDRESS 2920 ROBUF *=*+2 ;RS232 OUTPUT BUFFER ADDRESS 2930 FREKZP *=*+5 ;FREE KERNAL Z-PAGE SPACE 2940 ; 2950 ; END OF PAGE ZERO 2960 ; 2970 STACK *=*+256 ;SYSTEM STACK 2980 FBUFFR =STACK ;FPASC WORK AREA (15 BYTES) 2990 BAD =STACK ;TAPE INPUT ERROR LOG 3000 ; 3010 ; 3020 ERTLEN *=*+1 ;LENGTH OF ERTEXT 3030 MAXERT =79 ;MAX. LENGTH OF ERTEXT 3040 ERTEXT *=*+MAXERT ;BUFFER TO HOLD ERROR MESSAGE 3050 ; 3060 ; 3070 ; STORAGE FOR CON COMMAND: 3080 ; 3090 CONPNT *=*+2 ;OLD PRGPNT 3100 CONFLG *=*+1 ;OLD EXCINF 3110 CONCOD *=*+1 ;OLD CODPNT 3120 CONFOR *=*+2 ;OLD FORPT 3130 ; 3140 FPWORK *=*+1 3150 EXTROM *=*+1 ;EXTERNAL ROM FLAG (0=NO, 'I'=YES) 3160 IEEEIN *=*+1 ;IEEE INSTALLED (0=NO, 'I'=YES) 3170 ; 3180 LAT *=*+10 ;TABLE OF LA'S 3190 FAT *=*+10 ;TABLE OF FA'S 3200 SAT *=*+10 ;TABLE OF SA'S 3210 KEYBUF *=*+10 ;KEYBOARD BUFFER QUEUE (FIFO) 3220 ; 3230 MEMSTR *=*+2 ;START OF MEMORY 3240 MEMSIZ *=*+2 ;TOP OF MEMORY 3250 TIMOUT *=*+1 ;IEEE TIME OUT DEFEAT 3260 ; 3270 ; SCREEN EDITOR STORAGE 3280 ; 3290 COLOR *=*+1 ;ACTIVE COLOR NYBBLE 3300 GDCOL *=*+1 ;ORIGINAL COLOR UNDER CURSOR 3310 HIBASE *=*+1 ;BAS LOCATION OF SCREEN 3320 KBFLIM *=*+1 ;SIZE OF KEYBOARD BUFFER 3330 RPTFLG *=*+1 ;KEY REPEAT FLAG 3340 RPTCNT *=*+1 ;REPEAT SPEED COUNTER 3350 DELAY *=*+1 ;REPEAT DELAY COUNTER 3360 SHFLAG *=*+1 ;KEYBOARD SHIFT KEY/CTRL KEY/C= KEY 3370 LSTSHF *=*+1 ;LAST KEYBOARD SHIFT PATTERN 3380 KEYLOG *=*+2 ;VECTOR KEYBOARD TABLE SETUP 3390 SHMODE *=*+1 ;0=PET MODE, 1=CATTACANNA 3400 AUTODN *=*+1 ;AUTO SCROLL DOWN, 0=ON 3410 ; 3420 ; RS232 STORAGE 3430 ; 3440 M51CTR *=*+1 ;6551 CONTROL REGISTER IMAGE 3450 M51CDR *=*+1 ;6551 COMMAND REGISTER IMAGE 3460 M51AJB *=*+2 ;NON-STANDARD BPS (TIME/2-100) USA 3470 RSSTAT *=*+1 ;6551 STATUS REGISTER 3480 BITNUM *=*+1 ;NUMBER OF BITS LEFT TO SEND 3490 BAUDOF *=*+2 ;BAUD RATE FULL BIT TIME (MICROSEC) 3500 RIDBE *=*+1 ;INDEX TO END OF INPUT BUFFER 3510 RIDBS *=*+1 ;START OF INPUT BUFFER (PAGE) 3520 RODBS *=*+1 ;START OF OUTPUT BUFFER (PAGE) 3530 RODBE *=*+1 ;INDEX TO END OF OUTPUT BUFFER 3540 ; 3550 IRQTMP *=*+2 ;HOLDS IRQ-VECTOR DURING TAPE I/O 3560 ; 3570 ; TEMP SPACE FOR C64 VARIABLES 3580 ; 3590 ENABL *=*+1 ;RS232 ENABLES 3600 CASTON *=*+1 ;TOD SENSE DURING CASSETTE I/O 3610 KIKA26 *=*+1 ;TEMP STORAGE FOR CASSETTE READ 3620 STUPID *=*+1 ;TEMP D1IRQ INDICATOR FOR CASSETTE READ 3630 LINTMP *=*+1 ;TEMP FOR LINE INDEX 3640 PALNTS *=*+1 ;FLAG 0=NTSC, 1=PAL 3650 ; 3660 FNMAX =55 3670 FILNAM *=*+FNMAX ;USED FOR STORAGE OF FILE NAME 3680 TBUFF =FILNAM ;USED FOR STORAGE OF DISC COMMAND 3690 RANGNO *=*+1 ;LINE # RANGE POINTER 3700 RANGPT *=*+1 ;LINE # RANGE POINTER 3710 RANGMX =32 3720 RANGES *=*+RANGMX ;LINE # RANGES 3730 IERROR *=*+2 ;VECTOR PRINT BASIC ERROR MESSAGE 3740 NUMBER =TEMPF3 ;FP WORK AREA (SYNTAX ANALYSIS) 3750 *=*+5 ;NOT USED 3760 NUM2 *=*+5 ;FP WORK AREA (PRINT USING) 3770 SAREG *=*+8 ;UNUSED 3780 ; 3790 ; KERNAL VECTORS 3800 ; 3810 CINV *=*+2 ;IRQ RAM VECTOR 3820 IRQVCT =CINV 3830 CBINV *=*+2 ;BRK INSTR RAM VECTOR 3840 BRKVCT =CBINV 3850 NMIVCT *=*+2 ;NMI RAM VECTOR 3860 IOPEN *=*+2 ;OPEN ROUTINE VECTOR 3870 ICLOSE *=*+2 ;CLOSE ROUTINE VECTOR 3880 ICHKIN *=*+2 ;CHKIN ROUTINE VECTOR 3890 ICKOUT *=*+2 ;CKOUT ROUTINE VECTOR 3900 ICLRCH *=*+2 ;CLRCHN ROUTINE VECTOR 3910 IBASIN *=*+2 ;CHRIN ROUTINE VECTOR 3920 IBSOUT *=*+2 ;CHROUT ROUTINE VECTOR 3930 ISTOP *=*+2 ;STOP ROUTINE VECTOR 3940 IGETIN *=*+2 ;GETIN ROUTINE VECTOR 3950 ICLALL *=*+2 ;CLALL ROUTINE VECTOR 3960 USRCMD *=*+2 ;FOR MACHINE LANGUAGE MONITOR 3970 ILOAD *=*+2 ;LOAD ROUTINE VECTOR 3980 ISAVE *=*+2 ;SAVE ROUTINE VECTOR 3990 *=*+8 ;UNUSED 4000 TBUFFR *=*+192 ;TAPE I/O BUFFER 4010 *=*+4 ;UNUSED 4020 SCSIZE =1000 ;SCREEN SIZE 4030 SCREEN *=*+SCSIZE ;SCREEN MEMORY AREA 4040 *=*+16 ;SCREEN MEMORY EXCESS 4050 SPRPNT *=*+8 ;SPRITE DATA POINTERS 4060 ; 4070 ; 4080 ; COMAL PROGRAM FOLLOWS HERE: 4090 ; 4100 MBEGIN *=*+4 ;START OF MEMORY 4110 MBEGN1 *=*+1 ;START OF NAME TABLE 4120 MBEGN2 *=*+1 ;START OF STACKS 4130 ; 4140 ; 4150 ; 4160 ; START HERE TO PUT BUFFERS, VARIABLES, AND JUMP TABLE 4170 ; 4180 *=$C000 4190 ; 4200 RSIBUF *=*+256 ;RS232 INPUT BUFFER 4210 RSOBUF *=*+256 ;RS232 OUTPUT BUFFER 4220 ; 4230 STDPCK *=*+1000 ;VARIABLES FOR STANDARD PACKAGES 4240 ; 4250 INLEN =121 4260 INBUF *=*+INLEN ;INPUT BUFFER 4270 CDBUF *=*+CLIMIT ;CODE BUFFER 4280 TXT *=*+TLIMIT ;STRING CONSTANT BUFFER 4290 TXT1 =TXT-1 4300 ; 4310 FLEVEL *=*+1 ;FOR/TRAP NESTING LEVEL DURING PREPASS 4320 Q6 *=*+2 ;TEMPORARY 4330 Q7 *=*+2 ;TEMPORARY 4340 Q8 *=*+2 ;TEMPORARY 4350 Q9 *=*+2 ;TEMPORARY 4360 *=*+3 ;UNUSED 4370 MOVELN =MULT1 4380 MOVETY =MULT2 4390 ; 4400 SPSAV *=*+1 ;SAVE OF .S DURING EXECUTION 4410 SCINF *=*+2 ;NAME POINTER 4420 ; 4430 PSTART =* 4440 ; 4450 AUTO1 *=*+2 ;CURRENT LINE NUMBER FOR AUTO 4460 AUTOST *=*+2 ;STEP FOR AUTO 4470 ; 4480 DSTART *=*+2 ;START OF DATA QUEUE 4490 ; 4500 TABSET *=*+1 ;VALUE OF LAST ZONE STATEMENT 4510 ALTPOS *=*+1 ;POSITION IN SELECT OUTPUT FILE 4520 INTRNO *=*+2 ;PROCEDURE GIVEN BY INTERRUPT STMT. 4530 ; 4540 PEND =* 4550 ; 4560 ERRPNT *=*+1 ;CHAR POS OF ERROR 4570 NORINT *=*+2 ;NORMAL INTERRUPT VECTOR 4580 SAFE *=*+1 ;SAFE STATUS 4590 MAINRV *=*+1 ;MAIN REVISION 4600 SUBRV *=*+1 ;SUB REVISION 4610 TESTRV *=*+1 ;TEST VERSION 4620 MSGLIN *=*+2 ;ADDRESS OF MESSAGE LINE 4630 UPPER2 *=*+1 ;COPY OF BORGE 4640 EXTPRC *=*+1 ;FLAG FOR LOADING OF EXTERNAL PROC/FUNC 4650 EXTCNT *=*+2 ;NESTING LEVEL OF EXTERNAL PROC/FUNC 4660 SSIZE *=*+1 ;40 COL./80 COL. 4670 LUNIT *=*+1 ;LAST DISC (STATUS) 4680 BORGE *=*+1 ;SPECIAL FLAGS FOR LISTING 4690 OPENFL *=*+1 ;FLAG USED BY COPEN 4700 DFUNLN *=*+1 ;LENGTH OF DEFAULT UNIT TEXT 4710 DFUNIT *=*+2 ;DEFAULT UNIT (POWER UP VALUE .BYTE '0') 4720 DEFOUT *=*+1 ;SELECT OUTPUT FLAG 4730 ; 4740 IOVECT =* ;VECTORS: 4750 TRAPVC *=*+2 ; PAGEB; ERROR HANDLER 4760 EXTNVC *=*+2 ; PAGEB; EXTERNAL LOAD 4770 USRQVC *=*+2 ; PAGEB; INTERRUPT FACILITY 4780 IERTXT *=*+3 ; ERROR MESSAGE DATA 4790 IGETLN *=*+2 ; PAGEA; INPUT COMMAND LINE 4800 ISAVEC *=*+2 ; PAGEC; SAVE ADDITIONAL INFO 4810 ILOADC *=*+2 ; PAGEC; LOAD ADDITIONAL INFO 4820 IFNKEY *=*+2 ; PAGEA; HANDLE FUNCTION KEYS 4830 ; 4840 LIBPT *=*+1 ;PTR TO PLACE FOR NEXT LIBRARY DESCRIPTION 4850 ; 4860 LIBLEN =10 ;NO. OF LIBRARY DESCRIPTIONS 4870 ; 4880 LIBLO *=*+LIBLEN 4890 LIBHI *=*+LIBLEN 4900 LIBPAG *=*+LIBLEN 4910 ; 4920 ; 4930 ; OPEN FILE MODES (COPEN & CFNAME): 4940 ; 4950 MREAD =1 ;READ 4960 MWRITE =2 ;WRITE 4970 MREL =4 ;RELATIVE (RANDOM) 4980 ; 4990 ; FILE ATTRIBUTES (COPEN): 5000 ; 5010 MDISK =8 ;DISK FILE 5020 MS =16 ;SECONDARY ADDRESS SELECTION 5030 ML =32 ;AUTO LINEFEED 5040 MT =64 ;TIME OUT 5050 MA =128 ;ASCII I/O 5060 ; 5070 ; FILE TYPES (CFNAME): 5080 ; 5090 TAPPND =8 5100 TPRG =16 5110 TSEQ =TPRG+TPRG 5120 TREL =TSEQ+TPRG 5130 TUSR =TREL+TPRG 5140 ; 5150 MODET *=*+10 ;OPEN MODE FOR FILES 5160 COUNTT *=*+10 ;TABLE OF BYTE COUNT FOR FILES 5170 STT *=*+10 ;STATUS FOR OPENED FILES 5180 RECOTL *=*+10 ;TABLE OF RECORD POS. FOR FILES 5190 RECOTH *=*+10 5200 ; 5210 PPAGE *=*+1 ;OVERLAY TO PEEK/POKE/SYS 5220 NOREST *=*+1 ;<>0 DISABLE STOP/RESTORE 5230 LOADIN *=*+1 ;<>0 LOADING COMAL PROGRAM 5240 UNITFL *=*+1 ;0 SIMP.DEV; 1 DRIVE; 2 CASSETTE 5250 MODE *=*+1 ;FILE MODE 5260 CSTAT *=*+1 ;STATUS OF COMAL PROGRAM 5270 ; 5280 ; 1. INPUT ANALYSIS FROM SCREEN 5290 ; 2. - - - FILE 5300 ; 3. PREPASSING 5310 ; 4. EXECUTING A COMMAND 5320 ; 5. EXECUTING PROGRAM 5330 ; 5340 LSTFLG *=*+1 ;BIT VECTOR FOR RCREAT: 5350 ; 5360 ININD =$01 5370 OUTIND =$02 5380 LSTCON =$04 5390 NOIND =$08 5400 LSTEXT =$10 5410 ; 5420 LPMODE *=*+1 ;DEFAULT PRINTER OPEN MODE 5430 LPSA *=*+1 ;DEFAULT PRINTER SECONDARY ADDRESS 5440 LPFA *=*+1 ;DEFAULT PRINTER UNIT 5450 ; 5460 RECDEL *=*+1 ;RECORD POSITIONING DELAY 5470 ENDADR *=*+2 ;TOP OF RAM 5480 HEADLN *=*+1 ;POWER ON MESSAGE FLAG 5490 ; 5500 KWTAB *=*+2 ;KEYWORD TABLE (PAGEA) 5510 ; 5520 DFBORD *=*+1 ;DEFAULT BORDER COLOR 5530 DFBACK *=*+1 ;DEFAULT BACKGROUND COLOR 5540 DFFORG *=*+1 ;DEFAULT FOREGROUND COLOR 5550 ACBORD *=*+1 ;ACTUAL TEXT BORDER 5560 ACBACK *=*+1 ;ACTUAL TEXT BACKGROUND 5570 ; 5580 KEYLEN *=*+16 ;LENGTHS OF FUNC.KEY DEF'S 5590 KLEN *=*+1 ;# OF CHARS LEFT OF DEF. 5600 KPNT *=*+2 ;PNT TO KEY DEF 5610 DEFINP *=*+1 ;SELECT INPUT FLAG 5620 HZ50 *=*+1 ;0=60 HZ, 1=50 HZ TOD 5630 ; 5640 *=*+17 ;RESERVED FOR FUTURE USE 5650 MTO =* 5660 ; 5670 ; 5680 ; SUBROUTINES TO USE IN ASSEMBLER 5690 ; CODED SUBROUTINES IN COMAL: 5700 ; 5710 COLD *=*+3 ;COLD START OF COMAL 5720 WARM *=*+3 ;WARM START OF COMAL 5730 CALL *=*+3 ;JSR TO ANOTHER PAGE. 5740 GOTO *=*+3 ;JMP TO ANOTHER PAGE. 5750 LOAD *=*+3 ;LOAD FROM PAGEX 5760 STORE *=*+3 ;STORE TO PAGEX 5770 EXEC *=*+3 ;JSR TO PAGEX 5780 ; 5790 LDAC1 *=*+3 ;LOAD AC1 5800 LDAC2 *=*+3 ;LOAD AC2 5810 FNDPAR *=*+3 ;FIND PARAMETER (ASM.CALLS) 5820 COPY *=*+9 ;COPY AREA TOWARDS LOWER ADDRESSES 5830 COPYDN *=*+9 ;COPY AREA TOWARDS HIGHER ADDRESSES 5840 FPADD *=*+3 ;LOAD AC2 AND ADD AC2 TO AC1 5850 FPADD2 *=*+9 ;ADD AC2 TO AC1 5860 FPAHF *=*+9 ;ADD 0.5 TO AC1 5870 FPSUB *=*+3 ;LOAD AC2 AND SUB AC2 FROM AC1 5880 FPSUB2 *=*+9 ;SUB AC2 FROM AC1 5890 FPMUL *=*+3 ;LOAD AC2 AND MUL AC2 BY AC1 5900 FPMUL2 *=*+9 ;MUL AC2 BY AC1 5910 FPDIV *=*+3 ;LOAD AC2 AND DIV AC2 BY AC1 5920 FPDIV2 *=*+9 ;DIV AC2 BY AC1 5930 MUL10 *=*+9 ;MULTIPLY AC1 BY 10.0 5940 DIV10 *=*+9 ;DIVIDE AC1 BY 10.0 5950 STAC1 *=*+3 ;STORE AC1 5960 C1T2 *=*+9 ;COPY AC1 TO AC2 5970 C2T1 *=*+9 ;COPY AC2 TO AC1 5980 FPNEG *=*+9 ;NEGATE AC1 5990 FPSGN *=*+9 ;SIGN OF AC1 6000 FPSIN *=*+9 ;SINE OF AC1 6010 FPCOS *=*+9 ;COSINE OF AC1 6020 FPSQR *=*+9 ;SQUARE ROOT OF AC1 6030 FPTAN *=*+9 ;TANGENT OF AC1 6040 FPPOW *=*+9 ;RAISE AC2 TO THE POWER OF AC1 6050 FPATN *=*+9 ;ARCTANGENT OF AC1 6060 FPEXP *=*+9 ;RAISE AC1 TO THE POWER OF E 6070 FPLOG *=*+9 ;LOGARITHM BASE E OF AC1 6080 FPRND *=*+9 ;COMPUTE PSEUDO-RANDOM NUMBER (RANGE 0 TO 1) 6090 FPCOM *=*+9 ;COMPARE NUMBER TO AC1 6100 TRUNC *=*+9 ;CONVERT AC1 INTO INTEGER (-32768 .. 32767) 6110 FPINT =TRUNC 6120 FPINTG *=*+9 ;CONVERT AC1 INTO INTE000000004 .. 2^24-1) 6130 FPINTA *=*+9 ;CONVERT AC1 INTO INTEGER (0 .. 65535) 6140 INTFP *=*+9 ;CONVERT INTEGER INTO FP IN AC1 6150 FPASC *=*+9 ;CONVERT AC1 INTO ASCII EQUIVALENT (STR$) 6160 ; 6170 VAL *=*+6 ;CONVERT DECIMAL STRING INTO BINARY IN AC1 6180 POPA1 *=*+9 ;POP AC1 6190 POPA2 *=*+9 ;POP AC2 6200 PUSHA1 *=*+9 ;PUSH AC1 6210 PUSHRL *=*+9 ;PUSH REAL NUMBER 6220 PSHINT *=*+9 ;FLOAT & PUSH INTEGER (-32768 .. 32767) 6230 INTFPA *=*+9 ;FLOAT & PUSH INTEGER (0 .. 65535) 6240 ; 6250 EXCGST *=*+9 ;ALLOCATE LOCAL STORAGE 6260 EXCREM *=*+9 ;RECLAIM LOCAL STORAGE 6270 RESTOP *=*+9 ;ALLOCATE GLOBAL STORAGE 6280 RUNERR *=*+6 ;(null) TO COMAL ERROR HANDLER 6290 ; 6300 CRDT *=*+3 ;READ CHARACTER 6310 SPACE *=*+2 ;WRITE SPACE 6320 CWRT *=*+3 ;WRITE CHARACTER 6330 CCHKIN *=*+3 ;SELECT INPUT FILE 6340 CCKOUT *=*+3 ;SELECT OUTPUT FILE 6350 CCLRCH *=*+3 ;CLEAR CHANNEL 6360 CFNAME *=*+7 ;PARSE & COPY FILE NAME 6370 COPEN *=*+3 ;OPEN FILE 6380 CCLOSE *=*+3 ;CLOSE FILE 6390 CRLF *=*+3 ;OUTPUT CR AND LF 6400 GETLIN *=*+7 ;INPUT KEYBOARD LINE 6410 ; 6420 RESET *=*+6 ;RESET PROGRAM POINTERS 6430 DUMMY *=*+1 ;EMPTY SUBROUTINE (RTS) 6440 COMAL *=*+6 ;(null) TO COMAL EDITOR 6450 EXCUTE *=*+7 ;EXECUTE CODE IN CDBUF 6460 JLOAD *=*+7 ;LOAD COMAL PROGRAM 6470 ARRLEN *=*+7 ;COMPUTE NO. OF ELEMENTS IN ARRAY 6480 ; 6490 *=$D000 6500 ; 6510 ; 6566 VIDEO INTERFACE CONTROLLER 6520 ; 6530 VIC =* 6540 SPRPOS *=*+16 ;SPRITES 0-7 X & Y POS 6550 SPRXPS *=*+1 ;SPRITES 0-7 X-POS (MSB OF X-COORD.) 6560 VCTRL1 *=*+1 ;VIC CONTROL REGISTER 6570 RWRAST *=*+1 ;READ/WRITE RASTER VALUE FOR COMPARE IRQ 6580 PENX *=*+1 ;LIGHT-PEN LATCH X-POS 6590 PENY *=*+1 ;LIGHT-PEN LATCH Y-POS 6600 SPRDSP *=*+1 ;SPRITE DISPLAY ENABLE 6610 VCTRL2 *=*+1 ;VIC CONTROL REGISTER 6620 SPRYEX *=*+1 ;SPRITES 0-7 EXPAND 2*VERTICAL (Y) 6630 VCTRL3 *=*+1 ;VIC MEMORY CONTROL REGISTER 6640 IRQOCC *=*+1 ;VIC INTERRUPT FLAG REGISTER 6650 IRQMSK *=*+1 ;IRQ MASK REGISTER 6660 SPRBDP *=*+1 ;SPRITE TO BACKGROUND DISPLAY PRIORITY 6670 SPRMCM *=*+1 ;SPRITES 0-7 MULTI-COLOR MODE SELECT 6680 SPRXEX *=*+1 ;SPRITES 0-7 EXPAND 2*HORIZONTAL (X) 6690 SPRSPR *=*+1 ;SPRITE TO SPRITE COLLISION DETECT 6700 SPRBCK *=*+1 ;SPRITE TO BACKGROUND COLLISION DETECT 6710 BORCOL *=*+1 ;BORDER COLOR 6720 BCKCOL *=*+4 ;BACKGROUND COLOR 0-3 6730 SPRMCL *=*+2 ;SPRITE MULTI-COLOR REGISTER 0-1 6740 SPRCOL *=*+8 ;SPRITE 0-7 COLOR 6750 ; 6760 *=$D400 6770 ; 6780 ; 6581 SOUND INTERFACE DEVICE 6790 ; 6800 SID =* ;VOICE 1: 6810 V1FREQ *=*+2 ; FREQUENCY CONTROL 6820 V1PWW *=*+2 ; PULSE WAVEFORM WIDTH 6830 V1CTRL *=*+1 ; CONTROL REGISTER 6840 V1ENVL *=*+2 ; ENVELOPE GENERATOR (ADSR) 6850 ;VOICE 2: 6860 V2FREQ *=*+2 ; FREQUENCY CONTROL 6870 V2PWW *=*+2 ; PULSE WAVEFORM WIDTH 6880 V2CTRL *=*+1 ; CONTROL REGISTER 6890 V2ENVL *=*+2 ; ENVELOPE GENERATOR (ADSR) 6900 ;VOICE 3: 6910 V3FREQ *=*+2 ; FREQUENCY CONTROL 6920 V3PWW *=*+2 ; PULSE WAVEFORM WIDTH 6930 V3CTRL *=*+1 ; CONTROL REGISTER 6940 V3ENVL *=*+2 ; ENVELOPE GENERATOR (ADSR) 6950 ;FILTERS: 6960 FCUTOF *=*+2 ; FILTER CUTOFF FREQUENCY 6970 FRESON *=*+1 ; FILTER RESONANCE/VOICE INPUT CONTROL 6980 FMOVOL *=*+1 ; SELECT FILTER MODE AND VOLUME 6990 PADDL1 *=*+1 ;A/D-CONVERTER GAME PADDLE 1 7000 PADDL2 *=*+1 ;A/D-CONVERTER GAME PADDLE 2 7010 OSC *=*+1 ;OSCILLATOR 3 RANDOM NUMBER GENERATOR 7020 ENV *=*+1 ;ENVELOPE GENERATOR 3 OUTPUT 7030 *=$D500 7040 SIDIMG *=*+768 ;SID IMAGES 7050 COLRAM *=*+SCSIZE+24 ;COLOR RAM (NYBBLES) 7060 ; 7070 *=$DC00 7080 ; 7090 ; 6526 COMPLEX INTERFACE ADAPTER #1 7100 ; 7110 COLM =* ;KEYBOARD MATRIX 7120 D1PRA *=*+1 7130 ROWS =* ;KEYBOARD MATRIX 7140 D1PRB *=*+1 7150 D1DDRA *=*+1 7160 D1DDRB *=*+1 7170 D1T1L *=*+1 7180 D1T1H *=*+1 7190 D1T2L *=*+1 7200 D1T2H *=*+1 7210 D1TOD1 *=*+1 7220 D1TODS *=*+1 7230 D1TODM *=*+1 7240 D1TODH *=*+1 7250 D1SDR *=*+1 7260 D1ICR *=*+1 7270 D1CRA *=*+1 7280 D1CRB *=*+1 7290 ; 7300 *=$DD00 7310 ; 7320 ; 6526 COMPLEX INTERFACE ADAPTER #2 7330 ; 7340 D2PRA *=*+1 7350 D2PRB *=*+1 7360 D2DDRA *=*+1 7370 D2DDRB *=*+1 7380 D2T1L *=*+1 7390 D2T1H *=*+1 7400 D2T2L *=*+1 7410 D2T2H *=*+1 7420 D2TOD1 *=*+1 7430 D2TODS *=*+1 7440 D2TODM *=*+1 7450 D2TODH *=*+1 7460 D2SDR *=*+1 7470 S2ICR *=*+1 7480 D2CRA *=*+1 7490 D2CRB *=*+1 7500 ; 7510 *=$DE00 7520 ; 7530 OVRLAY *=*+256 ;OVERLAY CONTROL PORT 7540 ; 7550 ; KERNAL JUMP TABLE 7560 ; 7570 *=$FF81 7580 ; 7590 CINT *=*+3 ;INIT SCREEN EDITOR 7600 IOINIT *=*+3 ;INIT I/O 7610 RAMTAS *=*+3 ;INIT RAM 7620 RESTOR *=*+3 ;RESTORE DEFAULT I/O VECTORS 7630 VECTOR *=*+3 ;READ/SET VECTORED I/O 7640 SETMSG *=*+3 ;CONTROL KERNAL MESSAGES 7650 SECOND *=*+3 ;SEND SA AFTER LISTEN 7660 TKSA *=*+3 ;SEND SA AFTER TALK 7670 MEMTOP *=*+3 ;READ/SET TOP OF MEMORY 7680 MEMBOT *=*+3 ;READ/SET BOTTOM OF MEMORY 7690 SCNKEY *=*+3 ;SCAN KEYBOARD 7700 SETTMO *=*+3 ;SET TIMEOUT DEFEAT 7710 ACPTR *=*+3 ;INPUT BYTE FROM SERIAL PORT 7720 CIOUT *=*+3 ;OUTPUT BYTE TO SERIAL PORT 7730 UNTLK *=*+3 ;COMMAND DEVICE TO UNTALK 7740 UNLSN *=*+3 ;COMMAND DEVICE TO UNLISTEN 7750 LISTN *=*+3 ;COMMAND DEVICE TO LISTEN 7760 TALK *=*+3 ;COMMANDS DEVICE TO TALK 7770 RDSTAT *=*+3 ;READ I/O STATUS WORD 7780 SETLFS *=*+3 ;SET LOGICAL, FIRST, AND SECOND ADDR. 7790 SETNAM *=*+3 ;SET FILE NAME 7800 OPEN *=*+3 ;OPEN LOGICAL FILE 7810 CLOSE *=*+3 ;CLOSE LOGICAL FILE 7820 CHKIN *=*+3 ;OPEN CHANNEL FOR INPUT 7830 CHKOUT *=*+3 ;OPEN CHANNEL FOR OUTPUT 7840 CKOUT =CHKOUT 7850 CLRCHN *=*+3 ;CLOSE I/O CHANNELS 7860 CLRCH =CLRCHN 7870 CHRIN *=*+3 ;INPUT CHAR FROM CHANNEL 7880 RDT =CHRIN 7890 CHROUT *=*+3 ;OUTPUT CHAR TO CHANNEL 7900 WRT =CHROUT 7910 LOADF *=*+3 ;LOAD RAM FROM A DEVICE 7920 SAVEF *=*+3 ;SAVE RAM TO DEVICE 7930 SETTIM *=*+3 ;SET REAL TIME CLOCK 7940 RDTIM *=*+3 ;READ REAL TIME CLOCK 7950 STOP *=*+3 ;SCAN STOP KEY 7960 GET *=*+3 ;GET CHAR FROM KEYBOARD BUFFER 7970 CLALL *=*+3 ;CLOSE ALL CHANNELS AND FILES 7980 UDTIM *=*+3 ;INC. REAL TIME CLOCK 7990 SCREN *=*+3 ;RETURN ROW,COLUMN OF CURSOR 8000 PLOT *=*+3 ;READ/SET ROW,COLUMN FOR CURSOR 8010 IOBASE *=*+3 ;RETURNS BASE ADDRESS OF I/O DEVICES 8020 ; 8030 SKIP =$2C ;OPCODE FOR 'BIT ' (SKIP 2 BYTES) 8040 ; 8050 ; 8060 *=$FFFA 8070 ; 8080 CNMI *=*+2 ;NON-MASKABLE INTERRUPT VECTOR 8090 CRESET *=*+2 ;SYSTEM RESET VECTOR 8100 CIRQ *=*+2 ;INTERRUPT REQUEST VECTOR 8110 ; 8120 ; 8130 ;******************************************************** 8140 ; 8150 ; 8160 ; FOR USE IN ASSEMBLER CODED SUBROUTINES IN COMAL: 8170 ; 8180 ; LABELS FOR PROC/FUNC DEFINITIONS 8190 ; 8200 CART =%10000000 ;10XRXPPP (IN CARTRIDGE AT $8000-$BFFF) 8210 C64 =%01000111 ;01XRXPPP (IN C64 AT $0900-$FFFF) 8220 ROMMED =%00010000 8230 ; 8240 DEFPAG =C64-LORAM 8250 ; 8260 PROC =112 8270 ENDPRC =126 8280 ; 8290 FUNC =227 8300 ENDFNC =126 8310 ; 8320 PARAM =114 8330 VALUE =PARAM+0 8340 REF =PARAM+3 8350 ARRAY =6 8360 ; 8370 REAL =0 8380 INT =1 8390 STR =2 8400 ; 8410 ; 8420 ; SIGNAL TYPES: 8430 ; 8440 POWER1 =0 ;POWER UP SEI (ONLY FOR ROMMED LIBRARIES) 8450 POWER2 =1 ;POWER UP CLI (ONLY FOR ROMMED LIBRARIES) 8460 LINK =2 ;AFTER LINK/LOAD-COMMAND (ONLY LIBRARY JUST LINKED) 8470 DSCRD =3 ;BEFORE DISCARD-COMMAND 8480 NEW =4 ;AFTER NEW-COMMAND OR BAD LOAD/RUN/CHAIN 8490 CLRTAB =5 ;AFTER NAME TABLE IS CLEARED 8500 RUN =6 ;BEFORE RUN/CHAIN 8510 WARM1 =7 ;WARM START SEI 8520 CON =8 ;BEFORE CONTINUATION (CON COMMAND) 8530 ERROR =9 ;AFTER ERROR MESSAGE PRINTED 8540 STOP1 =10 ;AFTER STOP/END 8550 BASIC =11 ;BEFORE LEAVING COMAL 8560 ; 8570 ;